package example

import (
	"fmt"
	"log"

	"xlorm/db"
)

// User 定义用户表结构
type User struct {
	ID       int64  `db:"id"`
	Name     string `db:"name"`
	Email    string `db:"email"`
	Age      int    `db:"age"`
	IsActive bool   `db:"is_active"`
}

// UserDemo 演示用户表的基本操作
func UserDemo() {
	// 创建数据库连接
	engine, err := db.NewEngine()
	if err != nil {
		log.Fatalf("创建数据库引擎失败: %v", err)
	}
	defer engine.Close()

	// 1. 插入操作
	newUser := &User{
		Name:     "张三",
		Email:    "zhangsan@example.com",
		Age:      28,
		IsActive: true,
	}
	insertResult, err := engine.Insert(newUser)
	if err != nil {
		log.Fatalf("插入用户失败: %v", err)
	}
	fmt.Printf("插入成功，新用户ID: %d\n", insertResult)

	// 2. 更新操作
	updateUser := &User{
		ID:       insertResult,
		Name:     "张三丰",
		Email:    "zhangsanfeng@example.com",
		Age:      35,
		IsActive: true,
	}
	updateCount, err := engine.Update(updateUser)
	if err != nil {
		log.Fatalf("更新用户失败: %v", err)
	}
	fmt.Printf("更新成功，影响行数: %d\n", updateCount)

	// 3. 删除操作
	deleteCount, err := engine.Delete(&User{ID: insertResult})
	if err != nil {
		log.Fatalf("删除用户失败: %v", err)
	}
	fmt.Printf("删除成功，影响行数: %d\n", deleteCount)
}

// 如果需要运行演示，取消注释下面的 main 函数
/*
func main() {
	UserDemo()
}
*/
